/*
 * pruebaUsuarios.h
 *
 *  Created on: 13/10/2011
 *      Author: pablo
 */

#ifndef PRUEBAUSUARIOS_H_
#define PRUEBAUSUARIOS_H_

void pruebaAltasUsuario() {
	std::cout << "----Pruebas alta usuarios----" << std::endl;
	Configuracion conf;

	Usuario *usuario1 = new Usuario();
	usuario1->setNombre("Pablo");
	usuario1->setClave("clave1");
	Usuario *usuario2 = new Usuario();
	usuario2->setNombre("Pablo");
	usuario2->setClave("invalido");

	if(conf.agregarUsuario(usuario1)) {
		if(conf.getPassUsuario("Pablo") == "clave1") {
			std::cout << "ALTA OK" << std::endl;
		} else {
			std::cout << "ALTA ERROR: no esta agregado" << std::endl;
		}
	} else {
		std::cout << "ALTA ERROR: no se puede agregar uno que no existia" << std::endl;
	}

	if(conf.agregarUsuario(usuario2)) {
		std::cout << "ALTA ERROR: repetido" << std::endl;
	} else {
		if(conf.getPassUsuario("Pablo") == "clave1") {
			std::cout << "ALTA OK" << std::endl;
		} else {
			std::cout << "ALTA ERROR" << std::endl;
		}
	}
	std::cout << "----FIN Pruebas Altas usuarios----" << std::endl;
}

void pruebaRemoverUsuario() {
	std::cout << "---- Prueba remover usuario ----" << std::endl;

	Configuracion conf;
	Usuario *usuario1 = new Usuario();
	usuario1->setNombre("Pablo");
	usuario1->setClave("clave1");
	conf.agregarUsuario(usuario1);

	if(conf.removerUsuario("Pablo")){
		if(conf.getPassUsuario("Pablo") == "")
			std::cout << "REMOVER OK" << std::endl;
		else
			std::cout << "REMOVER ERROR" << std::endl;

	} else {
		std::cout << "REMOVER ERROR" << std::endl;
	}

	if(conf.removerUsuario("invalido")) {
		std::cout << "REMOVER ERROR" << std::endl;
	} else {
		if(conf.getPassUsuario("invalido") == "")
			std::cout << "REMOVER OK" << std::endl;

		else
			std::cout << "REMOVER ERROR" << std::endl;
	}
	std::cout << "----FIN  Prueba remover usuario ----" << std::endl;

}

void pruebaRecuperacionListaUsuarios() {
	std::cout << "----- PRUEBA getListaUsuarios--------" << std::endl;
    Configuracion c;
    Usuario *dinamico1 = new Usuario();
    dinamico1->setNombre("usu1");
    dinamico1->setClave("clave1");
    Usuario *dinamico2 = new Usuario();
    dinamico2->setNombre("usu2");
    dinamico2->setClave("clave2");
    c.agregarUsuario(dinamico1);
    c.agregarUsuario(dinamico2);
    std::list<Usuario> l = c.getUsuarios();
    std::list<Usuario>::iterator it;
    for(it = l.begin();it != l.end();it++){
        if(it->getNombre() == "usu1"){
            if(it->getClave() == "clave1")
                std::cout << "Recuperacion usuario 1 Ok" << std::endl;
            else
                std::cout << "Recuperacion usuario 1 Error" << std::endl;
        }else
            if(it->getNombre() == "usu2"){
                if(it->getClave() == "clave2")
                    std::cout << "Recuperacion usuario 2 Ok" << std::endl;
                else
                    std::cout << "Recuperacion usuario 2 Error" << std::endl;
            }else{
                std::cout << "ERROR DE RECUPERACION DE LISTA" << std::endl;
            }
    }
    std::cout << "----- FIN PRUEBA getListaUsuarios--------" << std::endl;
}

void pruebaUsuarios() {
	std::cout << "-------- PRUEBA USUARIOS --------" << std::endl;
	pruebaAltasUsuario();
	std::cout << std::endl;
	pruebaRemoverUsuario();
	std::cout << std::endl;
	pruebaRecuperacionListaUsuarios();
	std::cout << std::endl;
	std::cout << "-------- FIN PRUEBA USUARIOS --------" << std::endl;
	std::cout << std::endl;
}



#endif /* PRUEBAUSUARIOS_H_ */
